Introduction

A large part of software behavior is based on the system existing in multiple distinct states over time. These states may indicate different user interface views being displayed, waiting for input from the user or another source, or error conditions that can occur. This state-based behavior includes ways for the system to move from one state to another via defined transitions which are made when the system receives specific events. The software will implement this state-based behavior whether it is explicitly defined or implicitly defined in the code. Using a state machine to define this behavior is the clearest mechanism for everyone on the team to have a common understanding of how the system is required to operate.

Learning Outcomes

Study Resources

For your study of this topic, use these resources.

Video Lessons

Web Articles and Blogs

Books

Wikipedia

Class Lecture

Exercises

Before-Class Exercises

After-Class Exercises

End-Of-Day Exercises